﻿#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
namespace Ui {
class Widget;
}

class QStringList;

class Widget : public QWidget
{
    Q_OBJECT

public:
    enum area_status {
        Init,
        Disable,
        Enable,
        Add,
        Del,
        Update
    };
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void onSetDefaultConfig();    // 设置默认配置
    QString onSelectDir();           // 选择目录
    void onSaveEnv();       // 保存环境变量
    void onModifyDir();     // 修改目录.
    void onShowDbInfo(const QString &serverName);     // 显示数据库配置信息
    void onAddDbInfo();     // 增加新的服务
    void onDelDbInfo();     // 删除当前服务的配置信息.
    void onModifyDbInfo();  // 修改当前服务的配置信息.
    void onSaveDbInfo();    // 保存当前服务的配置信息.
    void onCancleDbInfo();    // 保存当前服务的配置信息.
    void onSaveFile();      // 保存配置文件.

private:
    bool setEnvValue(const QString &key, const QString &keyValue); // 写环境变量
    QStringList getDbServerName();  // 取得数据库服务名列表
    QString getDbConfigPath();  // 取数据库配置文件路径.
    QString getDbServerConfigInfo(const QString &serverName);    // 取服务的配置信息
    bool addDbServerName(const QString &serverName);    // 增加服务配置
    bool delDbServerName(const QString &serverName = QString());    // 删除服务配置
    bool updateDbServerConfigInfo();   // 更新服务配置
    // UI控制
    void chargeControl(area_status status);  // 控制按钮状态
    bool changeStatus(area_status status);   // 控制区域状态
    void changeInput(const QString protocol);   // 按协议显示控件
private:
    Ui::Widget *ui;
    QHash<QString, QString> server;
    QString fileText;
    area_status area;

    QString curSName;
    QString curProtocol;
    QString curHost;
    QString curPort;
    QString curSid;
};

#endif // WIDGET_H
